No mundo do Rust, uma ferramenta CLI robusta não é apenas um único script; é cuidadosamente planejada Projeto Estrutural. Para criar uma ferramenta como grep, dividimos nosso trabalho entre um Crate Binário e um Crate de Biblioteca.
1. A Metáfora da Máquina de Café
Pense em uma máquina de café de alta gama. O lib.rs contém os mecanismos internos para aquecer água e moer grãos — a "lógica do motor". O main.rs é o botão externo que o usuário pressiona — a "interface". Mantendo-os separados, um técnico pode testar o aquecedor (biblioteca) sem precisar pressionar o botão físico (binário) a cada vez.
2. Estruturando o Motor
Começamos com $ cargo new minigrep. Embora isso crie um main.rs, devemos introduzir manualmente src/lib.rs. Essa divisão arquitetônica garante que nossa lógica central de busca permaneça desacoplada do processamento de CLI, permitindo testes mais fáceis e modularidade.
3. Modularidade Testável
Ao mover a lógica para lib.rs, utilizamos o framework de teste do Rust para chamar funções da biblioteca em um ambiente controlado. Usamos use minigrep; no nosso binário para importar o motor, mantendo a lógica de análise de linha de comando isolada.